package com.mx.ipn.escom.wad.proyecto.documento.model;

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.Column;

import com.mx.ipn.escom.wad.proyecto.usuario.model.Usuario;

/**
 * Representa el modelo de un Documento
 * 
 * @author jorge
 *
 */
@Entity
@Table(name = "documento")
public class Documento {
	
	/**
	 * Representa el identificador de un Documento
	 */
	private Integer idDocumento;
	
	/**
	 * Representa el nombre de un Documento	
	 */
	private String nombre;
	
	/**
	 * Representa el cuerpo que puede tener un Documento
	 */
	private String cuerpo;
	
	/**
	 * Representa la fecha de creación del documento
	 */
	private Date fechaCreacion;
	
	
	/**
	 * Representa el identificador del usuario que esta creando el documento
	 */
	private Integer idUsuario;
	
	/**
	 * Representa el usuario que esta creando el documento
	 */
	private Usuario usuario;
	
	/**
	 * Constructor por default de un Documento
	 */
	public Documento() {
	}

	/**
	 * @return Integer idDocumento
	 */
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Id
	@Column(name = "id_documento", nullable = false)
	public Integer getIdDocumento() {
		return idDocumento;
	}

	/**
	 * @param Integer idDocumento
	 */
	public void setIdDocumento(Integer idDocumento) {
		this.idDocumento = idDocumento;
	}

	/**
	 * @return String nombre
	 */
	@Column(name="nombre", nullable = false)
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param String nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return String cuerpo
	 */
	@Column(name="cuerpo")
	public String getCuerpo() {
		return cuerpo;
	}

	/**
	 * @param String cuerpo
	 */
	public void setCuerpo(String cuerpo) {
		this.cuerpo = cuerpo;
	}

	/**
	 * @return Date fechaCreacion
	 */
	@Column(name="fecha_creacion", nullable = false)
	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	/**
	 * @param Date fechaCreacion
	 */
	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	/**
	 * 
	 * @return Integer idUsuario
	 */
	@Column(name = "id_usuario", nullable = false)
	public Integer getIdUsuario() {
		return idUsuario;
	}

	/**
	 * 
	 * @param Integer idUsuario
	 */
	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	/**
	 * 
	 * @return Usuario usuario
	 */
	@ManyToOne
	@JoinColumn(name = "id_usuario", referencedColumnName = "id_usuario", insertable = false, updatable = false)
	public Usuario getUsuario() {
		return usuario;
	}

	/**
	 * 
	 * @param Usuario usuario
	 */ 
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
}
